// 礼物列表适配器，用于直播间礼物弹窗的RecyclerView
// 支持选中礼物、发送礼物、区分大礼物和普通礼物
package com.bawei.module_live.ui.adapter

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.bawei.module_live.R
import com.bawei.module_live.data.GiftData
import com.bumptech.glide.Glide

/**
 * GiftAdapter
 * @param data 礼物数据列表
 * @param onGiftSend 发送礼物回调（点击发送按钮时触发）
 */
class GiftAdapter(
    private val data: List<GiftData>,
    private val onGiftSend: (GiftData) -> Unit
) : RecyclerView.Adapter<GiftAdapter.GiftViewHolder>() {

    // 当前选中的礼物下标，-1表示未选中
    var selectedPos: Int = -1
    // 大礼物ID集合（如跑车、王冠、玫瑰），用于区分动画类型
    private val bigGiftIds = setOf(1, 3, 6) // 跑车、王冠、玫瑰的id

    /**
     * 礼物ViewHolder，持有item_gift布局的控件引用
     */
    inner class GiftViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val img: ImageView = itemView.findViewById(R.id.gift_img) // 礼物图片
        val name: TextView = itemView.findViewById(R.id.gift_name) // 礼物名称
        val price: TextView = itemView.findViewById(R.id.gift_price) // 礼物价格
        val itemContainer: View = itemView.findViewById(R.id.gift_item) // 整个item容器
        val sendBtn: Button = itemView.findViewById(R.id.gift_send) // 发送按钮
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GiftViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_gift, parent, false)
        return GiftViewHolder(view)
    }

    override fun onBindViewHolder(holder: GiftViewHolder, position: Int) {
        val gift = data[position]
        val isSelected = position == selectedPos

        // 加载礼物图片（支持网络图片）
        Glide.with(holder.img.context)
            .load("http://10.161.9.80:7015/${gift.imgUrl}")
            .into(holder.img)

        holder.price.text = "${gift.price} 钻"

        if (isSelected) {
            // 选中状态：高亮背景，显示发送按钮，隐藏名称
            holder.itemContainer.setBackgroundResource(R.drawable.bg_gift_item_selected)
            holder.sendBtn.visibility = View.VISIBLE
            holder.name.visibility = View.GONE
        } else {
            // 未选中状态：普通背景，隐藏发送按钮，显示名称
            holder.itemContainer.setBackgroundResource(R.drawable.bg_gift_item_normal)
            holder.sendBtn.visibility = View.GONE
            holder.name.visibility = View.VISIBLE
            holder.name.text = gift.title
        }

        // 点击item选中礼物，刷新选中状态
        holder.itemView.setOnClickListener {
            val old = selectedPos
            selectedPos = position
            notifyItemChanged(old)
            notifyItemChanged(selectedPos)
        }
        // 点击发送按钮，回调onGiftSend，不处理具体业务
        holder.sendBtn.setOnClickListener {
            onGiftSend(gift) // 只回调，不处理业务
        }
    }

    override fun getItemCount() = data.size
}